
Автор Уварова Елена.
Раздел2.
На сегодняшний день существуют две модификации GIF-файлов, которые называются GIF87a (GIF87) и
GIF89а, разработанные соответственно в 1987 и 1989 году. Последняя модификация является
расширением GIF87a.
Уже в 1987 году в модификации GIF87a были определены следующие возможности:
- наличие нескольких различных изображений, содержащихся в одном
файле (кадр - отдельное изображение в составе файла);
- позиционирование изображения на логической области экрана;
- хранение изображения с чередованием строк (interlacing).
Модификация GIF89a расширила возможности управления выводом изображений, разрешив определение
следующих параметров:
- время (в сотых долях секунды) задержки до начала выдачи следующего кадра;
- ожидание ввода пользователя для перехода к следующему кадру;
- определение прозрачного цвета;
- включение комментариев, которые не отражаются при выводе изображений;
- включение строк текста;
- определение режима восстановления области экрана, занятой изображением,
после завершения отображения данного кадра;
- задание внутри файла данных, специфичных для отдельного приложения.
В основном GIF89a отличается от своего предшественника GIF87a тем, что способен передавать набор
графических изображений в движении. Официальная документация по GIF89a датирована 31 июля 1990
года. Любые отклонения от стандарта GIF89a считаются недействительными. Именно по этой причине
иногда вьювер не может распознать файл, казалось бы, широко известного GIF-формата.
Начиная с формата GIF89a, который впервые стал поддерживаться браузером Netscape 2.0, в Web
появилась возможность использовать анимацию. В GIF89a можно создать последовательность
изображений, которые выступают в роли кадров анимационного ролика. Анимация изображения
достигается тем, что одно изображение выводится вслед за другим. Также существует возможность
установки времени отображения каждого кадра и количества повторов. В настоящее время анимационные
gif-изображения являются одним из самых популярных способов создания простой анимации в
Web-страницах, т.к. все наиболее распространенные браузеры поддерживает работу с ним. Если же
браузер не понимает данный формат, то он просто выводит первый кадр анимированного изображения.
Рассмотрим основные характеристики GIF-файлов:
Цвет
Информация о цвете точки изображения в GIF задается индексом в таблице цветов или палитры,
хранящейся отдельно от графических данных. Проще говоря, на месте, соответствующем той или иной
точке, стоит не значение цвета, а адрес в таблице, по которому должен быть определен цвет.

Изображение состоит из 5 пикселей с индексами 3, 1, 1, 0 и 2, которые указывают на таблицу
цветов, определяющую RGB-значения для этих индексов.
В зависимости от "пестроты" изображения количество цветов в палитре может варьировать от 2 до
256. Индексы цветов при более короткой палитре будут занимать соответственно меньше места - 1
бит при 2х цветах, 5 бит при 32, 8 - при 256. Цвета оригинала, по той или иной причине не
содержащиеся в палитре, могут либо заменяться ближайшим доступным цветом, либо эмулироваться
растровым смешиванием ближайших цветов (диффузия). Выбор размера палитры и цветов в ней
предоставляется пользователю - только от него будет зависеть внешний вид и опрятность картинки.
Глубина цветовой палитры оказывает наибольшее влияние на размер получаемого файла. Снижение
глубины цвета любого GIF файла приводит к уменьшению его размера и увеличению скорости загрузки.
Диффузия
Диффузия позволяет создавать плавный переход между различными цветами или отображать цвет,
отсутствующий в палитре, путем смешения пикселей разного цвета. Диффузия наряду с глубиной
цветовой палитры оказывает влияние на размер GIF-файла.
На рисунке показано, как имея в распоряжении только два цвета - синий и красный может имитироваться пурпурный.

Происходит смешивание пикселей в местах, где это необходимо, тем самым достигается необходимый эффект.
В результате смешивания на изображении могут появиться пятна и полосы, из-за чего оно станет
искаженным и нерезким: разработчикам Web-страниц следует с осторожностью пользоваться
gif-изображениями. Компании Netscape и Microsoft пользуются "безопасной" палитрой, состоящей из
216 цветов, которая используется как в системах Macintosh, так и Window. Если в gif-изображении,
выводимом на 8-битовой системе, есть цвет, не входящий в эту палитру, будет происходить
смешивание.
Применение диффузии увеличивает размер файла, но зачастую это единственный способ более или
менее адекватной передачи исходной палитры рисунка после редуцирования. Другими словами
применение диффузии позволяет в большей степени урезать глубину палитры GIF-файла и тем самым
способствовать его "облегчению".
Сжатие
Формат Gif применяет те же алгоритмы сжатия, что и обычные программы-архиваторы (например ZIP),
поэтому при записи и считывании Gif-изображения никаких потерь информации не происходит. Однако
в отличии от них Gif-файлы архивируются и разархивируются автоматически. В GIF используется
LZW-компрессия (по именам математиков Лемпеля, Зива и Велча), что позволяет хорошо сжимать файлы,
в которых много однородных заливок (логотипы, надписи, схемы).
Используемый в GIF файлах алгоритм сжатия, подсчитывает идущие подряд по горизонтали точки
одинакового цвета и сохраняет ссылку на цвет и количество точек, а не ссылки на все точки. Для
узоров алгоритм сжатия не будет эффективным, т.к. меняется каждая точка.
При создании изображения следует учитывать следующую особенность алгоритма LZW сжатия. Степень
сжатия графической информации в GIF зависит не только от уровня ее повторяемости и предсказуемости
(однотонное изображение имеет меньший размер, чем беспорядочно "зашумленное"), но и от направления,
т.к. сканирование рисунка производится построчно. На рисунке приведено сравнение размеров
GIF-файлов в байтах при размере картинки 100х100 пикселей.

Чередование (Interlaced)
В GIF-файле определены два различных варианта хранения данных. В одном из них все строки
изображения записываются подряд от начальной до конечной (построчное хранение - NonInterlaced).
В другом варианте строки сохраняются в определенном порядке (хранение с чередованием строк -
Interlaced). Для последнего варианта порядок хранения строго определен. Они размещаются в
4 прохода:
- каждая 8-я строка, начиная с 0-й;
- каждая 8-я строка, начиная с 4-й;
- каждая 4-я строка, начиная с 2-й;
- каждая 2-я строка, начиная с 1-й.
Вариант хранения изображения является параметром самого файла изображения и задается при его
создании или редактировании. В зависимости от варианта хранения изображения происходит и
соответствующий вывод на экран - либо картинка разворачивается сверху вниз, либо она постепенно
проявляется и улучшается от прохода к проходу. Для WWW-браузеров характерно отображение файлов в
процессе их получения, что определяет однозначную связь между схемой хранения и процессом выдачи
на экран.
Таким образом, при первом проходе заполняется 1/8 часть изображения. На каждом последующем шаге
число заполненных строк растет, вследствие чего за 4 прохода изображение принимает оригинальный
вид. Можно было ожидать, что после первого прохода на изображении будет прорисована только каждая
8 строка, а остальные строки будут иметь цвет фона. Но на самом деле браузеры по мере прорисовки
изображения на каждом шаге производят интерполяцию по пикселям с известным значением цвета.
Использование такого подхода позволяет довольно быстро сформировать контуры изображения. При
получении очередных данных пиксели отдельных строк будут изменять свой цвет, давая эффект
постепенного проявления изображения.
Эта возможность широко применяется в Интернете. Сначала вы видите картинку с грубым разрешением,
а по мере поступления новых данных ее качество улучшается. Подобная возможность постепенного
проявления изображений с чередованием особенно ценно в Web, где скорость загрузки часто является
больным местом.
Прозрачность
Одно из главных преимуществ GIF89a перед большинством других графических форматов - поддержка
прозрачности. В формате GIF можно назначить один или более цветов прозрачными, они станут
невидимыми в Web браузерах и некоторых других программах. Это свойство формата GIF очень широко
используется в Интернете, особенно если возникает необходимость, чтобы фон (Background)
web-страницы просвечивал сквозь некоторые части изображения. Прозрачность обеспечивается за счет
дополнительного Alpha-канала, сохраняемого вместе с файлом.
Однако прозрачность в файле GIF далека от идеальной. В определенных случаях при ее использовании
вокруг рисунка может появиться ореол. Например, для создания плавных переходов используется
сглаживание. В сглаженных изображениях переходы бывают плавными, потому что граница между
изображением и фоном сглаживается, вследствие чего, сглаженные цвета образуют ореол или мусор
вокруг изображения.
Время задержки
Время задержки определяет промежуток между окончанием выдачи текущего кадра и началом выдачи
следующего. Перед началом выдачи следующего кадра выполняется восстановление области экрана,
занятого изображением, в соответствии с заданным режимом.
Режим ожидания ввода пользователем
Режим ожидания ввода пользователем позволяет интерактивно управлять сменой кадров при просмотре.
Для определенного кадра может быть задано и время задержки, и режим ожидания ввода. При этом смена
кадра осуществляется при наступлении любого из этих событий - окончании времени задержки или ввода
пользователя. Данный режим не поддерживается браузерами.
Комментарии
Включение комментариев в GIF-файл используется для текстовых пояснений к изображениям, которые не
являются частью самого изображения. Размер комментариев не ограничивается, однако излишне большое
их количество приводит к увеличению размера файла.
Включение строк текста в файл
Включение строк текста в файл позволяет визуализировать его в простой форме в виде фрагмента
графического изображения. При этом используется сетка ячеек символов, которая определяется
параметрами в этом блоке файла. Текстовые данные представляются как моноширинные символы по
одному символу на ячейку наиболее подходящим шрифтом и размером. Данные представляются до тех пор
пока не будет достигнут конец данных или сетка ячеек не будет заполнена. Данный режим не
поддерживается браузерами.
Режим восстановления области экрана
Режим восстановления области экрана задает способ, которым будет обрабатываться фрагмент графики
после его отображения. Определены следующие способы:
- не делать ничего;
- оставить как есть, то же самое, что ничего не делать;
- восстановить предыдущее состояние, т.е. заполнить фрагмент экрана тем
изображением, которое было до вывода текущего изображения;
- заполнить цветом подложки (цвет фона или фоновое изображение).
Задание внутри GIF-файла данных, специфичных для приложений
Задание внутри GIF-файла данных, специфичных для отдельного приложения, позволяет практически
неограниченно расширять возможности работы с этими файлами. В одном GIF-файле может быть
несколько разных блоков для разных приложений. Можно создать блок, который буде игнорироваться
всеми программами, кроме той, для которой он предназначен. Например браузер Netscape использует
такой блок для задания параметров цикла смены изображения.
Image Tools Group 2004г.